1. 概述

Testcontainers是一个Java库,用于集成测试中配合Docker容器提供一个轻量级的一次性实例,如MySQL等等,我们则只需要启动Docker,在application.yml中配置如下信息,即可通过Docker拉取对应的中间件,由此进行解耦,其他的主机则仅需保证Docker服务的正常运行即可

1
2
3
4
5
6
spring:
datasource:
driver-class-name: org.testcontainers.jdbc.ContainerDatabaseDriver
url: jdbc:tc:mysql:8.0.22:///test
username: test
password: test

2. 一个坑

a. 现象

但是,对于Mac电脑的M1芯片来说,以上配置的MySQL则一直会拉取不到,并在控制台提示Can't get Docker image: RemoteDockerImage(imageName=mysql:8.0.22, imagePullPolicy=DefaultPullPolicy()),背后的原因是因为M1芯片采用的架构是arm64,然而MySQL官方提供的Docker镜像则只有amd64架构的,因此会导致如上报错

b. 解决方案

  • Docker命令行
    • 只需在拉取命令中新增指定参数--platform linux/x86_64即可正常运行
  • Spring的application.yml配置